/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fi.uba.algo3.tp3.modelo.animados;

import ar.uba.fi.algo3.titiritero.ObjetoVivo;
import fi.uba.algo3.tp3.modelo.inanimados.PuntoBonus;
import fi.uba.algo3.tp3.modelo.servicios.ServicioJuego;

/**
 *
 * @author ariel
 */
public class PuntoBonusTimer implements ObjetoVivo {

    private final static int DURACION = 10000;
    private final static int TOTAL_ESPERA = 1000;
    private int max_espera;
    private Integer contadorDeEspera;
    private Integer contadorDeDuracion;
    private Boolean desabilitado;
    private ServicioJuego servicio;
    private PuntoBonus puntoBonus;

    public PuntoBonusTimer(ServicioJuego servicio, PuntoBonus puntoBonus) {
        this.servicio = servicio;
        this.puntoBonus = puntoBonus;
        contadorDeEspera = 0;
        contadorDeDuracion=0;
        desabilitado = Boolean.FALSE;
        max_espera=TOTAL_ESPERA;
        puntoBonus.desactivado();
    }

    @Override
    public void vivir() {
        if (!desabilitado) {
            contarPuntoBonus();
        }
    }

    public void reestablecer() {
        max_espera=((int)(Math.random()*(TOTAL_ESPERA-1))+1);
        contadorDeEspera = 0;
        contadorDeDuracion=0;
        puntoBonus.desactivado();
        desabilitado = Boolean.FALSE;
    }

    private void contarPuntoBonus() {
        if (contadorDeEspera < max_espera) {
            contadorDeEspera++;
        } else if (contadorDeDuracion < DURACION) {
            if (contadorDeDuracion == 0) {
                puntoBonus.activar();
            }
            contadorDeDuracion++;
        } else {
            desabilitado = Boolean.TRUE;
            puntoBonus.desactivado();
        }
    }

    public void desabilitar() {
        desabilitado=Boolean.TRUE;
        puntoBonus.desactivado();
    }
}
